package borrador;

import logica.Atributo;
import logica.AtributoCompuesto;
import logica.AtributoRepetidoException;
import logica.AtributoSimple;
import logica.AtributoSimpleException;
import logica.Entidad;
import logica.EntidadRepetidaException;
import logica.IdExternoInexistenteException;
import logica.Proyecto;
import logica.SinNombreException;
import logica.TipoDeEntidad;

/* para ver los atributos compuestos */
public class AtributoCompuestoEjemplo {
	
	private Proyecto proyecto;
	private Entidad entidad;
	
	public AtributoCompuestoEjemplo() throws SinNombreException, AtributoRepetidoException, AtributoSimpleException, EntidadRepetidaException, IdExternoInexistenteException
	{
		crearEntidad();
		crearProyecto();
	}
	
	public Proyecto getProyecto() {
		return proyecto;
	}
	
	public Entidad getEntidad() {
		return entidad;
	}

	private void crearEntidad() throws SinNombreException, AtributoRepetidoException, AtributoSimpleException 
	{
		entidad = new Entidad("una entidad");
		entidad.setTipo(TipoDeEntidad.COSA);	
		
		Atributo subAtributo1 = new AtributoSimple("subAtri1");
		Atributo subAtributo2 = new AtributoSimple("subAtri2");
		Atributo subAtributoCompuesto = new AtributoCompuesto("subAtriComp");
		Atributo atributo1 = new AtributoSimple("atri1");
		Atributo atributo2 = new AtributoSimple("atri2");
		Atributo atributo3 = new AtributoSimple("atri3");
		Atributo atributoCompuesto = new AtributoCompuesto("atriComp");
		
		subAtributoCompuesto.agregarAtributo(subAtributo1);
		subAtributoCompuesto.agregarAtributo(subAtributo2);
		
		atributoCompuesto.agregarAtributo(atributo1);
		atributoCompuesto.agregarAtributo(atributo2);
		atributoCompuesto.agregarAtributo(atributo3);
		atributoCompuesto.agregarAtributo(subAtributoCompuesto);
		
		entidad.agregarAtributo(atributoCompuesto);
	}
	
	private void crearProyecto() throws EntidadRepetidaException, IdExternoInexistenteException, SinNombreException
	{
		proyecto = new Proyecto("proyecto-atributo-compuesto");
		proyecto.getDiagramaPpal().agregarObjetoDiagrama(entidad);
	}

}
